Skip to content

UTP: Add proper support for channels#986

Merged
simon-lemay-unity merged 3 commits intofeature/initial-relay-utpfrom
feature/initial-relay-utp-channels
Jul 30, 2021
Merged

UTP: Add proper support for channels#986
simon-lemay-unity merged 3 commits intofeature/initial-relay-utpfrom
feature/initial-relay-utp-channels

Conversation

@simon-lemay-unity
Copy link
Copy Markdown
Contributor

And some minor bugfixes related to fragmentation.

To support channels, three new pipelines are created when setting up the UTP driver. When sending a message, the MLAPI NetworkDelivery associated with the channel is determined and from that, we select the appropriate pipeline to send the message through.

This PR also includes some tests for channels. Note that aside from fragmentation, the actual behaviour of the different channels (e.g. reliability, sequencing) is not tested. It is assumed that whatever pipeline we are sending traffic on is already well-tested in UTP itself. The reason we're testing fragmentation is that it's easy to do, but also because UTPTransport now exposes a MaximumMessageLength constant and we want to ensure messages of that specific size are handled correctly.

The UTPTransport.Send method would throw a NullReferenceException
exception when passed default(ArraySegment<byte>) as the message data.
Now it simply sends an empty message to its remote host (not a terribly
useful feature, but better than an exception).
The fragmentation pipeline was set up to handle messages up to 6KB in
length, but the receive buffer was only 1KB long. Messages longer than
that were just ignored (although an error message was logged).
The transport now selects an appropriate pipeline according to the
delivery level of the channel, rather than send everything on the
default unreliable pipeline.
@simon-lemay-unity simon-lemay-unity merged commit 6322bbb into feature/initial-relay-utp Jul 30, 2021
@simon-lemay-unity simon-lemay-unity deleted the feature/initial-relay-utp-channels branch July 30, 2021 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants